package ws;

import java.util.ArrayList;
import java.util.Collection;

import org.orm.PersistentException;

import SOAPVO.AlumnoSOAPVO;
import SOAPVO.SubsectorSOAPVO;

import com.google.gson.Gson;

public class SubsectorSOA {
	
	/**
	 * Busca todos los subsectores y los retorna como json.
	 * Si no encuentra subsectores retorna 1
	 * y si ocurre una excepcion retorna 2
	 * 
	 * @return
	 */
	public static String getAll() {

		String json = null;
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		Collection<SubsectorSOAPVO> coleccionSubsectorOAPVO = new ArrayList<SubsectorSOAPVO>();
		orm.Tan_subsector[] ormSubsector;
		try {
				ormSubsector = lDAOFactory.getTan_subsectorDAO()
						.listTan_subsectorByQuery(null, null);
				// busqueda de todos los registros existentes
			if (ormSubsector.length == 0) {// si no se encontraron registros
				json = "1";
			} else {// si se encontraron registros
				for (int i = 0; i < ormSubsector.length; i++) {
					SubsectorSOAPVO objeto = SubsectorSOAPVO
							.crearSubsectorSOAPVO(ormSubsector[i]);
					coleccionSubsectorOAPVO.add(objeto);
				}// fin guardando resultados
				Gson gson = new Gson();
				json = gson.toJson(coleccionSubsectorOAPVO);
			}
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			json = "2";
		}
		return json;
	}
	
	/**
	 * Busca un subsector por id y lo retorna como json.
	 * Si el id es nulo retorna 0, si no encuentra el subsector retorna 1
	 * y si ocurre una excepcion retorna 2
	 * 
	 * @param id
	 * @return
	 */
	public static String getById(int id) {
		String json = null;
		// Comprueba si la variable ingresada es nula
		if (id == 0) {
			// Retorna un 0, indicando que el dato ingresado es nulo
			json = "0";
		} else {
			try {
				orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
				Collection<SubsectorSOAPVO> colectionSubsectorSOAPVO = new ArrayList<SubsectorSOAPVO>();
				orm.Tan_subsector ormSubsectores;
				// Busca al subsector con esa id
				ormSubsectores = lDAOFactory.getTan_subsectorDAO()
						.loadTan_subsectorByQuery("sub_id='" + id + "'", null);
				// Si no se encuentra el subsector, devuelve un 1, de lo contrario,
				// agrega al subsector a la coleccion y lo retorna
				if (ormSubsectores == null) {
					json = "1";
				} else {
						SubsectorSOAPVO subsector = SubsectorSOAPVO
								.crearSubsectorSOAPVO(ormSubsectores);
						colectionSubsectorSOAPVO.add(subsector);
					Gson gson = new Gson();
					json = gson.toJson(colectionSubsectorSOAPVO);
				}// fin guardando resultado
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				// Retorna 2 indicando excepcion
				json = "2";
			}
		}
		return json;
	}

	/**
	 * Busca un subsector por id de curso y lo retorna como json.
	 * Si el id del curso es nulo retorna 0, si no encuentra el subsector retorna 1
	 * y si ocurre una excepcion retorna 2
	 * 
	 * @param cursoId
	 * @return
	 */
	
	public static String getByCurso(int cursoId) {
		String json = null;
		// Comprueba si la variable ingresada es nula
		if (cursoId == 0) {
			// Retorna un 0, indicando que el dato ingresado es nulo
			json = "0";
		} else {
			try {
				orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
				Collection<SubsectorSOAPVO> colectionSubsectoresSOAPVO = new ArrayList<SubsectorSOAPVO>();
				orm.Tan_subsector[] ormSubsectores;
				// Busca los subsectores por curso
				ormSubsectores = lDAOFactory.getTan_subsectorDAO()
						.listTan_subsectorByQuery(
								"tan_cursocur='" + cursoId + "'", null);
				// Si no se encuentra subsectores, devuelve un 1, de lo sontrario,
				// agrega los subsectores a la coleccion y los retorna
				if (ormSubsectores.length == 0) {
					json = "1";
				} else {
					for (int i = 0; i < ormSubsectores.length; i++) {
						SubsectorSOAPVO subsector = SubsectorSOAPVO
								.crearSubsectorSOAPVO(ormSubsectores[i]);
						colectionSubsectoresSOAPVO.add(subsector);
					}// fin guardando resultados
					Gson gson = new Gson();
					json = gson.toJson(colectionSubsectoresSOAPVO);
				}
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				// Retorna 2 indicando excepcion
				json = "2";
			}
		}
		return json;
	}
	
	/**
	 * Busca un subsector por nombre y lo retorna como json.
	 * Si el nombre es nulo retorna 0, si no encuentra el subsector retorna 1
	 * y si ocurre una excepcion retorna 2
	 * 
	 * @param nombre
	 * @return
	 */
	
	public static String getByNombre(String nombre) {
		String json = null;
		// Comprueba si la variable ingresada es nula
		if ((nombre==null)||(nombre.equals(""))) {
			// Retorna un 0, indicando que el dato ingresado es nulo
			json = "0";
		} else {
			try {
				orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
				Collection<SubsectorSOAPVO> colectionSubsectoresSOAPVO = new ArrayList<SubsectorSOAPVO>();
				orm.Tan_subsector[] ormSubsectores;
				// Busca todos los cursos por nombre
				ormSubsectores = lDAOFactory.getTan_subsectorDAO()
						.listTan_subsectorByQuery(
								"sub_nombre='" + nombre + "'", null);
				// Si no se encuentran cursos, devuelve un 1, de lo sontrario,
				// agrega los cursos a la coleccion y lo retorna
				if (ormSubsectores.length == 0) {
					json = "1";
				} else {
					for (int i = 0; i < ormSubsectores.length; i++) {
						SubsectorSOAPVO subsector = SubsectorSOAPVO
								.crearSubsectorSOAPVO(ormSubsectores[i]);
						colectionSubsectoresSOAPVO.add(subsector);
					}// fin guardando resultados
					Gson gson = new Gson();
					json = gson.toJson(colectionSubsectoresSOAPVO);
				}
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				// Retorna 2 indicando excepcion
				json = "2";
			}
		}
		return json;
	}
	
}
